package br.com.droid;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import br.com.droid.model.Unidade;

public class BancoUnidade {
	
	private ArrayList<Unidade> listaUnidades;

	private static BancoUnidade instance;

	public BancoUnidade() {
		listaUnidades = new ArrayList<Unidade>();
	}
	
	public static BancoUnidade getBancoInstance(){
		if(instance==null)
			instance = new BancoUnidade();
		return instance;
	}
	
	public String atualizar(Unidade unidade) {
		String teste = "update unidade set num_avaliacoes=" + unidade.getNum_avaliacoes()
				+ ", quant_estrelas = " + unidade.getQuant_estrelas()
				+ " where id=" + unidade.getId() + ";";

		if (ConexaoMySQL.getConexaoMySQL() != null) {
			Statement stm;
			try {
				stm = ConexaoMySQL.getConexaoMySQL().createStatement();
				stm.executeUpdate(teste);
				ConexaoMySQL.FecharConexao();
				return "Lugar atualizado no banco com sucesso!";
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return "Erro ao atualizar a unidade!";
	}
		
	public Unidade buscarUnidade(long id){
		Unidade unidade = null;
		String teste = "SELECT * from Unidade where id = +"+id+";";
        
        if(ConexaoMySQL.getConexaoMySQL()!=null){
            Statement stm;
			try {
				stm = ConexaoMySQL.getConexaoMySQL().createStatement();
				ResultSet rs = stm.executeQuery(teste);
		            while (rs.next()) {
		                unidade = new Unidade();
		                unidade.setId(rs.getLong("id"));
		        		unidade.setNome(rs.getString("nome"));
		        		unidade.setId_tipo(rs.getLong("id_tipo"));
		        		unidade.setSigla(rs.getString("sigla"));
		        		unidade.setEndereco(rs.getString("endereco"));
		        		unidade.setFax(rs.getString("fax"));
		        		unidade.setSite(rs.getString("site"));
		        		unidade.setNum_avaliacoes(rs.getInt("num_avaliacoes"));
		        		unidade.setQuant_estrelas(rs.getInt("quant_estrelas"));
		        		unidade.setLastmodified(rs.getString("lastmodified"));
		            }
	            ConexaoMySQL.FecharConexao();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
        }
		return unidade;
	}
	
	public Unidade buscarUnidade(String nome){
		Unidade unidade = null;
		String teste = "SELECT * from Unidade where nome = '"+nome+"';";
        
        if(ConexaoMySQL.getConexaoMySQL()!=null){
            Statement stm;
			try {
				stm = ConexaoMySQL.getConexaoMySQL().createStatement();
				ResultSet rs = stm.executeQuery(teste);
		            while (rs.next()) {
		                unidade = new Unidade();
		                unidade.setId(rs.getLong("id"));
		        		unidade.setNome(rs.getString("nome"));
		        		unidade.setId_tipo(rs.getLong("id_tipo"));
		        		unidade.setSigla(rs.getString("sigla"));
		        		unidade.setEndereco(rs.getString("endereco"));
		        		unidade.setFax(rs.getString("fax"));
		        		unidade.setSite(rs.getString("site"));
		        		unidade.setNum_avaliacoes(rs.getInt("num_avaliacoes"));
		        		unidade.setQuant_estrelas(rs.getInt("quant_estrelas"));
		        		unidade.setLastmodified(rs.getString("lastmodified"));
		            }
	            ConexaoMySQL.FecharConexao();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
        }
		return unidade;
	}
	
	public ArrayList<Unidade> listarUnidadesAtualizadas(String data, long idCentro) {

		String teste = "SELECT * from Unidade where id_centro = "+idCentro+" and lastmodified > '" + data + "';";
		listaUnidades.clear();

		if (ConexaoMySQL.getConexaoMySQL() != null) {
			Statement stm;
			try {
				stm = ConexaoMySQL.getConexaoMySQL().createStatement();
				ResultSet rs = stm.executeQuery(teste);
				while (rs.next()) {
					Unidade unidade = new Unidade();
					unidade.setId(rs.getLong("id"));
	        		unidade.setNome(rs.getString("nome"));
	        		unidade.setId_tipo(rs.getLong("id_tipo"));
	        		unidade.setSigla(rs.getString("sigla"));
	        		unidade.setEndereco(rs.getString("endereco"));
	        		unidade.setFax(rs.getString("fax"));
	        		unidade.setSite(rs.getString("site"));
	        		unidade.setNum_avaliacoes(rs.getInt("num_avaliacoes"));
	        		unidade.setQuant_estrelas(rs.getInt("quant_estrelas"));
	        		unidade.setLastmodified(rs.getString("lastmodified"));
					listaUnidades.add(unidade);
				}
				ConexaoMySQL.FecharConexao();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return listaUnidades;
	}
	
}
